Increasingly, network applications and services are deployed on “cloud” infrastructures. In many cloud infrastructures, a third-party “cloud provider” owns a large pool of physical hardware resources (e.g., networked servers, storage facilities, computational clusters, etc.) and leases those hardware resources to users for deploying network applications and/or services.
Rather than leasing the hardware resources directly, the cloud provider often allows clients to specify and lease “virtual machines” that match the client's specifications. The virtual machines are then deployed on the cloud-provider's hardware resources. The underlying hardware resources implementing the cloud are therefore invisible to the client, who sees only the virtual machines.
Cloud infrastructures enable many benefits both for the software administrators and for the hardware owners (i.e., cloud providers). Software administrators can specify and lease computing resources (i.e., virtual machines) matching their exact specifications without up-front hardware purchase costs. The administrators can also modify their leased resources as application requirements and/or demand changes. Hardware owners (i.e., cloud providers) also realize substantial benefits from cloud infrastructures. The provider can maximize hardware utilization rates by hosting multiple virtual machines on a single physical machine without fear that the applications executing on the different machines may interfere with one another. Furthermore, the ability to easily migrate virtual machines between physical machines decreases the cloud provider's hardware maintenance costs. For these reasons, even large companies that own substantial hardware resources (e.g., search engine companies, social networking companies, e-commerce companies, etc.) often deploy those hardware resources as private clouds.
Today, many network applications and services are hosted on cloud infrastructures. For examples, Internet startups often deploy their web applications on cloud infrastructures rather than purchase hardware, IT departments use cloud infrastructures to deploy various IT services (such as email, social networking, backup storage, etc.), and web giants deploy their own hardware resources as private clouds.
As the demand for cloud computing has grown, so has the number of cloud computing providers. Different cloud providers often offer different qualities of service, different pricing, and/or other distinctive features that make those particular providers more desirable for one purpose or another. Accordingly, some organizations lease resources from multiple cloud providers. Unfortunately, the interfaces to different providers often differ and managing multiple deployments on multiple clouds has become a problem for many organizations.